#include <iostream>

//饿汉模式
// class Singleton
// {
// public:
//     static Singleton& GetInstance()
//     {
//         return _eton;
//     }
//     void GetData()
//     {
//         std::cout << _data << std::endl;
//     }
// private:
//     Singleton():_data(666)
//     {
//         std::cout << "单例对象构造成功" << std::endl;
//     }
//     ~Singleton()
//     {}
//     Singleton(const Singleton& eton) = delete;
//     Singleton& operator=(const Singleton& eton) = delete;
// private:
//     static Singleton _eton;
//     int _data;
// };
// Singleton Singleton::_eton;

//懒汉模式
class Singleton
{
public:
    static Singleton& GetInstance()
    {
        static Singleton eton;
        return eton;
    }
    void GetData()
    {
        std::cout << _data << std::endl;
    }
private:
    Singleton():_data(666)
    {
        std::cout << "单例对象构造成功" << std::endl;
    }
    ~Singleton()
    {}
    Singleton(const Singleton& eton) = delete;
    Singleton& operator=(const Singleton& eton) = delete;
private:
    int _data;
};
int main()
{
    //Singleton::GetInstance().GetData();
    return 0;
}
